Asynchronous serial data communications systems are known wherein a Data Terminal Equipment (DTE) asynchronously transmits/receives serial data to/from a Data Communications Equipment (DCE) at varying baud rates. The baud rate represents the rate (i.e., bits per second or bps) at which data is communicated between the DTE and the DCE. For example, the DTE may transmit/receive data to/from the DCE at a rate in a range between about 300 bps to 15,200 bps. Before any communication begin, however, the DTE and DCE are required to operate at the same baud rate. The autobaud command may be used to equalize the baud rate used by the DTE and the DCE.
FIG. 1 illustrates a system utilizing asynchronous serial data communications according to the prior art. DTE 100 is a data terminal equipment, such as an ASCII terminal or a personal computer. DCE 101 may be a data communications equipment, such as a modem. Communications link 117 may be an asynchronous serial data communication link between DTE 100 and DCE 101.
DTE 100 may include a first upper software layer 105, a first low level driver 110 and a first UART 115. The first upper software layer 105 may carry out high level functions required of DTE 100. For example, first upper software layer 105 may be a software application. First low level driver 110 may be a low level software module used to carry out system functions required by the first upper software layer 105. The first low level driver 110 may have detailed information regarding the operation of the hardware included in DTE 100, such as the first UART 115. The first UART 115 is a Universal Asynchronous Receiver Transmitter which may carry out asynchronous serial data communications over the communications link 117.
The DCE 101 may include a second UART 120, a second low level driver 125 and a second upper software layer 130, all of which may operate in a similar fashion to the analogous components included in DTE 100, and a processor 122. The processor 122 may provide internal services to the DCE 101 including synchronization and management of the other components included in DCE 101.
The communications link 117 may be an asynchronous serial data communications link defined as ITU V.24, V.28 or other serial communications format. The format of characters communicated over the communication link 117 may be in compliance with ITU T.50, V.4 or other character format.
First UART 115 and second UART 120 may operate at different speeds. For example first UART 115 may initially operate at 28.8K bps, while second UART 120 may initially operate at 33.3K bps. In this initial state, first UART 115 and second UART 120 may not be able to communicate. For this reason, the autobaud command may be used to equalize the speed of first UART 115 and 120. The autobaud command may include any command or string of characters sent from the DTE 100 which allows the DCE 101 to detect the speed and character format of the characters transmitted by DTE 100. The DTE 100 may perform an autobaud command by transmitting a pair of known characters to the DCE 101. When the second UART 120 is initialized to the same baud rate used by the first UART 115, first UART 115 and second UART 120 may communicate across the communications link 117. For example, the autobaud command may be implemented using the ASCII characters AT, at, a/, or A/ wherein each ASCII character is made up of a series of data bits.
FIG. 2A illustrates the data bit values which may make-up the characters used in the autobaud. For example, the ASCII character A may be comprised of the bit values b1=1, b2=0, b3=0, b4=0, b5=0, b6=0, and b7=1. When this series of data bits is detected, the DCE 101 indicates that an ASCII character A was received. The ASCII character T may be made up of the bit values b1=0, b2=0, b3=1, b4=0, b5=1, b6=0, and b7=1. Accordingly, when the DCE 101 receives the ASCII characters A and T in succession, the second UART 120 sets the baud rate to the rate measured during the reception of the A and the T characters. The second UART 120 may determine the baud rate used to transmit the characters in the autobaud command by measuring the time needed to transmit a bit in the A and T characters. Bit 8 (b8) and bit 9 (b9) may be a parity bit or one or two stop bits, depending on the character format used. Thereby, the values of b8 and b9 are unknown and represented by question marks.
FIG. 2B illustrates the logic levels of various signals within an asynchronous serial data communications format used by comnmunications link 117. Transmission begins with a low-going start pulse 205 asserted for a time t.sub.b representing the time used to transmit a single bit. The start bit 205 signals the second UART 120 that a stream of data will follow. For example, the stream of data 210 may include seven or eight data bits transmitted serially which represent the ASCII character A as described above. The first UART 115 may transmit a parity bit 215 which indicates the parity associated with the data 210. The first UART 115 transmits a series of stop bits 220 which indicate that the transmission of data 210 and parity 215 is complete. The first UART 115 may start a new transmission by transmitting another start bit 225.
The autobaud command may be executed according to the prior art by measuring the duration of the start bit and generating a corresponding clock frequency representing the estimated baud rate of the asynchronous serial data stream. If the clock frequency is correct the second UART 120 may receive two successive characters representing an autobaud command. If the clock frequency is incorrect, the data 210 will not be sampled according to the asynchronous serial data format described above and will not be equal to the data transmitted by the first UART 115. For example, if first UART 115 transmits ASCII characters AT in succession at about 56.6 kbits/sec, the duration of the start bit (t.sub.b) will be about 17 us. Therefore, a clock frequency of about 56.6 kHz may be used as the clock frequency to clock data 210 into the second UART 120. If the two characters received by the second UART 120 are equal to AT, the estimated baud rate is correct. If however, the two ASCII characters clocked into the second UART 120 are not equal to AT, the estimated baud rate is incorrect or first UART 115 did not transmit an autobaud command.
Asynchronous serial data communications systems according to the prior art may operate at high speed (e.g., 115,200 bps). At 115,200 bps, the start bit duration (t.sub.b) is about 8.5 microseconds. Consequently, the second UART 120 may be required to measure a t.sub.b of about 8.5 microseconds to perform the autobaud function. The start bit duration may be measured using either hardware of software. The software approach may include a software loop which is well known in the art. The hardware approach may use a timer to time the duration of the start bit 205. The timer interrupts the processor 122, which reads the timer count, computes the data rate implied by the timer value, and sets up the second UART 120 with the computed baud rate. As explained below, the processor 122 may take about 1 millisecond to service the interrupt.
Wireless modems may have difficulty in measuring the duration of t.sub.b when baud rates approach 115,200 bps. Specifically, wireless modems may operate in an online command mode during which the modem may be busy at any time. In other words, a wireless modem may be performing other functions when an autobaud command is received. For example, wireless mobile devices used for connection-oriented services such as AMPS may be required to listen to a base station or transmit a message even when no connection is established. Consequently, the modem in a wireless device may be too busy to perform the autobaud function using either the software loop or the hardware timer approach. For example, it may take one millisecond for the wireless modem to respond to an interrupt from the UART. At 8.5 microseconds per bit, one millisecond is the duration of roughly twelve characters. Therefore, an entire autobaud command may be sent by DTE 100 before DCE 101, using a hardware timer, could process the transmitted characters.